#pragma once

#include "Foundation.h"

/* Warning and error messages */
void		Warning(string warning, int wCode = ERR_UNDEFINED);
void		Error(string error, int eCode = ERR_UNDEFINED);
void		Critical(string critical, int cCode = ERR_UNDEFINED);

/* Input functions */
string		ReadString(string prompt, int minLen = MIN_STR, int maxLen = MAX_STR);
char		ReadChar(string prompt);
int			ReadInt(string prompt, int min = MIN_I, int max = MAX_I);
float		ReadFloat(string prompt, float min = MIN_F, float max = MAX_F);
Date		ReadDate(string prompt, Date minDate = 0, Date maxDate = MAX_I);
int			ReadIntWithOptions(string prompt, int argCount, ...);
int			ReadIntWithOptions(string prompt, vector<string> args);

/* Various helper functions */
string 		capitalize(const string &str);
void 		printDate(Date date);		// on the form DD-MM-YYYY
string 		dateToString(Date date);	// on the form DD-MM-YYYY

/* Remove all in list functions */
void 		clearListSorted(List *sorted);	// List must be "Sorted"
void 		clearListXIFO(List *xifo);		// List can be "FIFO" or "LIFO"

/* Menu functions */
void 		callCommand(string cmd);
void		writeMenu();
void 		mainMenu();
void 		editMenu();						// Case E
void 		overviewMenu();					// Case O
void		selectHotel();					// Case H

